	.section	__TEXT,__text,regular,pure_instructions
	.build_version ios, 14, 0	sdk_version 14, 0
	.p2align	2               ; -- Begin function -[Test add:by:]
"-[Test add:by:]":                      ; @"\01-[Test add:by:]" add by 函数
	.cfi_startproc
; %bb.0:
	sub	sp, sp, #32             ; =32
	.cfi_def_cfa_offset 32
	str	x0, [sp, #24]			; 保存现场
	str	x1, [sp, #16]			; 保存现场
	str	w2, [sp, #12]			; 将第一个参数写入内存
	str	w3, [sp, #8]			; 将第二个参数写入内存
	ldr	w8, [sp, #12]			; 获取到w2的值 add函数第一个参数 ? OC 的第一个参数为什么是在w2寄存器而不是在w0寄存器
	ldr	w9, [sp, #8]			; 获取到w3的值 add函数第二个参数
	add	w0, w8, w9				; 计算 x + y 保存结果到w0寄存器
	add	sp, sp, #32             ; =32 恢复栈空间
	ret							; add函数返回
	.cfi_endproc
                                        ; -- End function
	.globl	_main                   ; -- Begin function main
	.p2align	2
_main:                                  ; @main
	.cfi_startproc
; %bb.0:
	sub	sp, sp, #64             ; =64
	stp	x29, x30, [sp, #48]     ; 16-byte Folded Spill 这里为什么要折叠这16个字节不使用？
	add	x29, sp, #48            ; =48 抬高栈顶指针sp 分配0x48大小栈空间，保存x29 x30现场
	.cfi_def_cfa w29, 16       	
	.cfi_offset w30, -8
	.cfi_offset w29, -16
	mov	w8, #0					; 将立即数传入w8寄存器
	stur	wzr, [x29, #-4]		
	stur	w0, [x29, #-8]
	stur	x1, [x29, #-16]
	str	x2, [sp, #24]     		; 保存x2
	adrp	x9, _OBJC_CLASSLIST_REFERENCES_$_@PAGE
	add	x9, x9, _OBJC_CLASSLIST_REFERENCES_$_@PAGEOFF 			; 获取Test类页地址
	ldr	x0, [x9]												; 从内存中取到Test类放入到x0寄存器
	str	w8, [sp, #12]           ; 4-byte Folded Spill			; 保存w8寄存器
	bl	_objc_alloc_init										; 跳转到oc类对象申请函数
	str	x0, [sp, #16]											; 保存Test类对象
	ldr	x0, [sp, #16]											; 取出Test类对象 ？
	adrp	x9, _OBJC_SELECTOR_REFERENCES_@PAGE					
	add	x9, x9, _OBJC_SELECTOR_REFERENCES_@PAGEOFF				; 
	ldr	x1, [x9]
	mov	w2, #3
	mov	w3, #4
	bl	_objc_msgSend
	adrp	x9, l__unnamed_cfstring_@PAGE
	add	x9, x9, l__unnamed_cfstring_@PAGEOFF
	str	w0, [sp, #8]            ; 4-byte Folded Spill
	mov	x0, x9
	mov	x9, sp
                                        ; implicit-def: $x1
	ldr	w8, [sp, #8]            ; 4-byte Folded Reload
	mov	x1, x8
	str	x1, [x9]
	bl	_NSLog
	ldr	w0, [sp, #12]           ; 4-byte Folded Reload
	ldp	x29, x30, [sp, #48]     ; 16-byte Folded Reload
	add	sp, sp, #64             ; =64
	ret
	.cfi_endproc
                                        ; -- End function
	.section	__TEXT,__objc_classname,cstring_literals
l_OBJC_CLASS_NAME_:                     ; @OBJC_CLASS_NAME_
	.asciz	"Test"

	.section	__DATA,__objc_const
	.p2align	3               ; @"_OBJC_METACLASS_RO_$_Test"
__OBJC_METACLASS_RO_$_Test:
	.long	1                       ; 0x1
	.long	40                      ; 0x28
	.long	40                      ; 0x28
	.space	4
	.quad	0
	.quad	l_OBJC_CLASS_NAME_
	.quad	0
	.quad	0
	.quad	0
	.quad	0
	.quad	0

	.section	__DATA,__objc_data
	.globl	_OBJC_METACLASS_$_Test  ; @"OBJC_METACLASS_$_Test"
	.p2align	3
_OBJC_METACLASS_$_Test:
	.quad	_OBJC_METACLASS_$_NSObject
	.quad	_OBJC_METACLASS_$_NSObject
	.quad	__objc_empty_cache
	.quad	0
	.quad	__OBJC_METACLASS_RO_$_Test

	.section	__TEXT,__objc_methname,cstring_literals
l_OBJC_METH_VAR_NAME_:                  ; @OBJC_METH_VAR_NAME_
	.asciz	"add:by:"

	.section	__TEXT,__objc_methtype,cstring_literals
l_OBJC_METH_VAR_TYPE_:                  ; @OBJC_METH_VAR_TYPE_
	.asciz	"i24@0:8i16i20"

	.section	__DATA,__objc_const
	.p2align	3               ; @"_OBJC_$_INSTANCE_METHODS_Test"
__OBJC_$_INSTANCE_METHODS_Test:
	.long	24                      ; 0x18
	.long	1                       ; 0x1
	.quad	l_OBJC_METH_VAR_NAME_
	.quad	l_OBJC_METH_VAR_TYPE_
	.quad	"-[Test add:by:]"

	.p2align	3               ; @"_OBJC_CLASS_RO_$_Test"
__OBJC_CLASS_RO_$_Test:
	.long	0                       ; 0x0
	.long	8                       ; 0x8
	.long	8                       ; 0x8
	.space	4
	.quad	0
	.quad	l_OBJC_CLASS_NAME_
	.quad	__OBJC_$_INSTANCE_METHODS_Test
	.quad	0
	.quad	0
	.quad	0
	.quad	0

	.section	__DATA,__objc_data
	.globl	_OBJC_CLASS_$_Test      ; @"OBJC_CLASS_$_Test"
	.p2align	3
_OBJC_CLASS_$_Test:
	.quad	_OBJC_METACLASS_$_Test
	.quad	_OBJC_CLASS_$_NSObject
	.quad	__objc_empty_cache
	.quad	0
	.quad	__OBJC_CLASS_RO_$_Test

	.section	__DATA,__objc_classrefs,regular,no_dead_strip
	.p2align	3               ; @"OBJC_CLASSLIST_REFERENCES_$_"
_OBJC_CLASSLIST_REFERENCES_$_:
	.quad	_OBJC_CLASS_$_Test

	.section	__TEXT,__cstring,cstring_literals
l_.str:                                 ; @.str
	.asciz	"%d"

	.section	__DATA,__cfstring
	.p2align	3               ; @_unnamed_cfstring_
l__unnamed_cfstring_:
	.quad	___CFConstantStringClassReference
	.long	1992                    ; 0x7c8
	.space	4
	.quad	l_.str
	.quad	2                       ; 0x2

	.section	__DATA,__objc_selrefs,literal_pointers,no_dead_strip
	.p2align	3               ; @OBJC_SELECTOR_REFERENCES_
_OBJC_SELECTOR_REFERENCES_:
	.quad	l_OBJC_METH_VAR_NAME_

	.section	__DATA,__objc_classlist,regular,no_dead_strip
	.p2align	3               ; @"OBJC_LABEL_CLASS_$"
l_OBJC_LABEL_CLASS_$:
	.quad	_OBJC_CLASS_$_Test

	.section	__DATA,__objc_imageinfo,regular,no_dead_strip
L_OBJC_IMAGE_INFO:
	.long	0
	.long	64

.subsections_via_symbols
